1. Field of the Invention
The present invention relates generally to an improved data processing system and in particular to devices and methods for performing calculations more efficiently. Still more particularly, the present invention relates to improved techniques for more efficient calculation of coordinate rotation digital computer (CORDIC) algorithm rotation angles.
2. Description of the Related Art
A problem often confronted in computing is how to implement calculation of mathematical functions. Many mathematical functions cannot be calculated directly, but rather numerical techniques are employed to approximate answers to the mathematical function.
One technique for solving mathematical functions on a computer is known as the coordinate rotation digital computer (CORDIC) algorithm. The CORDIC algorithm is an iterative arithmetic algorithm. The CORDIC algorithm is an efficient method for computing many complex mathematical functions, such as, but not limited to, lattice filters, QR factorizations, sine functions, cosine functions, fast Fourier transformations, and generally transcendental functions that cannot be constructed from a finite combination of constant algebraic, exponential, logarithmic functions and field operations. The CORDIC algorithm is commonly used in digital signal processing and in graphical processing.
The basic task performed by the CORDIC algorithm is to rotate a 2 by 1 vector through an angle using a linear, circular, or hyperbolic coordinate system. The CORDIC algorithm rotates the vector through a sequence of elementary angles whose algebraic sum approximates the desired rotation angle. These elementary angles have the property that the vector rotation through each of them may be computed easily with a single shift and add operation. This formulation of CORDIC algorithm leads to a unified procedure to compute a wide range of complex mathematical functions using a fixed number of shifts and add computing steps.
However, the CORDIC algorithm is an inherently inaccurate calculation having three main error types introduced from the quantization effects of implementing the CORDIC algorithm. The first type of error occurs from the quantization of the rotation angle. The second type of error arises from rounding numbers of the finite precision arithmetic used when executing the CORDIC algorithm. The third type of error arises from the rotation angle quantization, which arises from the rotation angle being incorrectly represented by the wrong sign.